﻿using FieldTools.Util;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace FieldTools.MyQQ.Core.HttpAPI
{
    /// <summary>
    /// MyQQHttpAPI操作类
    /// </summary>
    public class MyqqHttpApi
    {
        private string PostUrl = "";
        private string Token = "";


        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="url"></param>
        /// <param name="token"></param>
        public MyqqHttpApi(string url, string token)
        {
            PostUrl = url;
            Token = token;
        }
        /// <summary>
        /// 构造函数，默认本地端口11121，token空
        /// </summary>
        public MyqqHttpApi()
        {
            PostUrl = "http://localhost:11121/MyQQHTTPAPI";
            Token = "";
        }
        #region 请求方法

        /// <summary>
        /// post请求
        /// </summary>
        /// <param name="url">请求接口地址</param>
        /// <param name="postStr">请求字符串</param>
        /// <param name="headers">输出头</param>
        /// <param name="bodyType">body类型</param>
        /// <returns></returns>
        public static async Task<string> ExecutePostAsync(string url, string postStr, Dictionary<string, string> headers = null, string bodyType = "application/json")
        {
            try
            {
                using HttpClientHandler handler = new HttpClientHandler { UseProxy = false, AllowAutoRedirect = false };
                using HttpClient httpClient = new HttpClient(handler);
                httpClient.Timeout = TimeSpan.FromMinutes(5);

                using StringContent httpContent = new StringContent(postStr, Encoding.UTF8, bodyType);
                headers?.ForEach(aHeader =>
                {
                    httpContent.Headers.Add(aHeader.Key, aHeader.Value);
                });
                using var resultTask = await httpClient.PostAsync(url, httpContent);
                return await resultTask.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {
                return "请求失败:" + ex.Message;
            }
        }

        /// <summary>
        /// 给MyQQ的post请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="postRequestInfo"></param>
        /// <param name="postUrl"></param>
        /// <returns></returns>
        public async Task<ResultInfo<string>> MyQQRequestAsync<T>(PostRequestInfo<T> postRequestInfo, string postUrl)
        {
            string Url = postUrl;
            string jsonstr = postRequestInfo.ToJson();
            var res = await ExecutePostAsync(Url, jsonstr);//post请求异常
            //var res = await HttpHelper.ExecuteGetAsync<string>(Url);
            var s = res.ToObject<ResultInfo<object>>();
            string da = s.data.ToJson();
            ResultInfo<string> re = new()
            {
                success = s.success,
                code = s.code,
                msg = s.msg,
                data = da
            };
            return re;
        }

        private List<HttpApiRequestInfo> FilterAfterMyQQHttpApiRequestInfo()
        {
            //var q = _myQQHttpApiRequestInfoBusiness.GetDataListAsync(new PageInput<ConditionDTO>() { Search = new ConditionDTO() { } });
            //try
            //{
            //    var q = Db.GetIQueryable<MyQQHttpApiRequestInfo>();//因为没有实体注入，所以，无法访问数据库
            //    if (!q.Any()) return new();
            //    var data = q.ToList();
            //    //筛选当前用户的关联条目，避免数据发送错乱
            //    var q2 = data.Where(x => x.UserId == _operator?.UserId);
            //    if (q2.Any())
            //    {
            //        data = q2.ToList();
            //    }
            //    if (data.Any())
            //    {
            //        var datalist = data.ToList();
            //        //考虑到若是服务端放在服务器，本地的MyQQ框架所在计算机没有公网IP的话，是无法接收到HTTP请求的，
            //        //为了节约资源，这里做简化处理，筛除重复项，一组（posturl+token）请求只发送一次，待后续其他解决方案
            //        var p = datalist.Where(x => x.Switch == 1 && x.OnlineStatus == 1);
            //        if (!p.Any()) return new();
            //        datalist = datalist.Distinct(new PosturlTokenComparer()).ToList();
            //        return datalist;
            //    }
            //}
            //catch (Exception ex)
            //{
            //    throw ex;
            //}
            return new();
        }

        /// <summary>
        /// 给MyQQ的Post请求
        /// </summary>
        /// <typeparam name="T">返回结果数据域类型</typeparam>
        /// <param name="function">调用函数名</param>
        /// <param name="o">传入参数集合</param>
        /// <returns></returns>
        public async Task<AjaxResult<T>> MyQQRequestAsync<T>(string function, object o)
        {
            if (PostUrl.IsNullOrEmpty()) return new AjaxResult<T>() { Success = false, Msg = "回调地址不可为空" };
            if (function.IsNullOrEmpty()) return new AjaxResult<T>() { Success = false, Msg = "回调函数不可为空" };
            string url = PostUrl;
            string token = Token;
            PostRequestInfo<object> info = new()
            {
                function = function,
                token = token,
                @params = o
            };
            try
            {
                var res = await MyQQRequestAsync(info, url);
                if (res.success)
                {
                    //请求成功的操作
                    var data = res.data.ToObject<ResData>();
                    if (!data.ret.IsNullOrEmpty())
                    {
                        object v = data.ret;
                        try
                        {
                            //基本类型可以这样转换，这样来说操作更简单😂
                            T da = (T)v;
                            return new AjaxResult<T>() { Success = true, Msg = "api调用成功", Data = (T)v };
                        }
                        catch (Exception)
                        {
                            return new AjaxResult<T>() { Success = true, Msg = "api调用成功", Data = v.ToJson().ToObject<T>() };
                        }
                    }
                }
                return new AjaxResult<T>() { Success = false, Msg = "api调用失败,返回异常" };
            }
            catch (Exception ex)
            {
                return new AjaxResult<T>() { Success = false, Msg = "请求失败：" + ex.Message };
            }

        }
        /// <summary>
        /// 给MyQQ的无数据域返回调用
        /// </summary>
        /// <param name="function">调用函数名</param>
        /// <param name="o">传入参数集合</param>
        /// <returns></returns>
        public async Task<AjaxResult> MyQQRequesNoDataAsync(string function, object o)
        {
            if (PostUrl.IsNullOrEmpty()) return new AjaxResult() { Success = false, Msg = "回调地址不可为空" };
            if (function.IsNullOrEmpty()) return new AjaxResult() { Success = false, Msg = "回调函数不可为空" };

            string url = PostUrl;
            string token = Token;
            PostRequestInfo<object> info = new()
            {
                function = function,
                token = token,
                @params = o
            };
            try
            {
                var res = await MyQQRequestAsync(info, url);
                if (res.success)
                {
                    //请求成功的操作
                    var data = res.data.ToObject<ResData>();
                    return new AjaxResult() { Success = true, Msg = "请求成功" };
                    //if (!data.ret.IsNullOrEmpty())
                    //{
                    //    object v = data.ret;
                    //    return new AjaxResult() { Success = true, Msg = "api调用成功"};
                    //}
                    //else
                    //{
                    //    return new AjaxResult() { Success = false, Msg = "api调用失败,返回异常" };
                    //}
                }
            }
            catch (Exception ex)
            {
                return new AjaxResult() { Success = false, Msg = "请求失败：" + ex.Message };
            }
            return new AjaxResult() { Success = false, Msg = $"POST请求失败，请求函数：{info.function},token:{info.token}" };



        }
        #endregion

        #region 接口操作
        /// <summary>
        /// 取当前框架内部时间戳
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetVer()
        {
            object o = new();
            var res = await MyQQRequestAsync<string>("Api_GetVer", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取当前框架内部时间戳
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetTimeStamp()
        {
            object o = new();
            var res = await MyQQRequestAsync<int>("Api_GetTimeStamp", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得插件自身启用状态，启用真 禁用假
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_IsEnable()
        {
            object o = new();
            var res = await MyQQRequestAsync<bool>("Api_IsEnable", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 请求禁用插件自身
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult> Api_DisabledPlugin()
        {
            object o = new();
            var res = await MyQQRequesNoDataAsync("Api_DisabledPlugin", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 在框架记录页输出一行信息
        /// </summary>
        /// <param name="c1">内容:输出的内容</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_OutPut(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequesNoDataAsync("Api_OutPut", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 取用户名
        /// </summary>
        /// <param name="c1">响应QQ:机器人QQ</param>
        /// <param name="c2">对象QQ:欲取得的QQ的号码</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetNick(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetNick", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 向对象、目标发送信息 支持好友 群 讨论组 群临时会话 讨论组临时会话
        /// </summary>
        /// <param name="c1">响应QQ:机器人QQ</param>
        /// <param name="c2">信息类型:1好友 2群 3讨论组 4群临时会话 5讨论组临时会话 6在线临时会话</param>
        /// <param name="c3">收信群_讨论组:发送群信息、讨论组信息、群临时会话信息、讨论组临时会话信息时填写</param>
        /// <param name="c4">收信对象:最终接收这条信息的对象QQ</param>
        /// <param name="c5">内容:信息内容</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SendMsg(string c1, int c2, string c3, string c4, string c5)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5 };
            var res = await MyQQRequesNoDataAsync("Api_SendMsg", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 向对象、目标发送信息 支持好友 群 讨论组 群临时会话 讨论组临时会话
        /// </summary>
        /// <param name="c1">响应QQ:机器人QQ</param>
        /// <param name="c2">匿名:0为普通 1为匿名（匿名需要群开启）</param>
        /// <param name="c3">信息类型:1好友 2群 3讨论组 4群临时会话 5讨论组临时会话 6在线临时会话</param>
        /// <param name="c4">收信群_讨论组:发送群信息、讨论组信息、群临时会话信息、讨论组临时会话信息时填写</param>
        /// <param name="c5">收信对象:最终接收这条信息的对象QQ</param>
        /// <param name="c6">内容:信息内容</param>
        /// <param name="c7">气泡ID:（已失效）默认为0使用本来的气泡，-1为随机气泡</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SendMsgEx(string c1, int c2, int c3, string c4, string c5, string c6, int c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequesNoDataAsync("Api_SendMsgEx", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 使用HTTP模式发信，可用于发送长消息
        /// </summary>
        /// <param name="c1">响应QQ:机器人QQ</param>
        /// <param name="c2">匿名:0为普通 1为匿名（匿名需要群开启）</param>
        /// <param name="c3">信息类型:1好友 2群</param>
        /// <param name="c4">收信群号:信息类型=2时填写群号，信息类型=1时留空</param>
        /// <param name="c5">收信对象:信息类型=1时填写收信对象QQ，信息类型=2时留空</param>
        /// <param name="c6">内容:信息内容</param>
        /// <param name="c7">匿名:0为普通，1为匿名</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SendLongMsg(string c1, int c2, int c3, string c4, string c5, string c6, int c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequesNoDataAsync("Api_SendLongMsg", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 发送XML消息
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 匿名:0为普通 1为匿名（匿名需要群开启）</param>
        /// <param name="c3"> 信息类型:同Api_SendMsg 1好友 2群 3讨论组 4群临时会话 5讨论组临时会话</param>
        /// <param name="c4"> 收信群_讨论组:发群内、临时会话必填 好友可不填</param>
        /// <param name="c5"> 收信对象:临时会话、好友必填 发至群内可不填</param>
        /// <param name="c6"> ObjectMsg:XML代码</param>
        /// <param name="c7"> 结构子类型:00 基本 02 点歌 其他不明 ，默认为0即可</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SendXml(string c1, int c2, int c3, string c4, string c5, string c6, int c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequesNoDataAsync("Api_SendXml", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 发送JSON结构消息
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 匿名:0为普通 1为匿名（匿名需要群开启）</param>
        /// <param name="c3"> 信息类型:同Api_SendMsg 1好友 2群 3讨论组 4群临时会话 5讨论组临时会话</param>
        /// <param name="c4"> 收信群_讨论组:发群内、临时会话必填 好友可不填</param>
        /// <param name="c5"> 收信对象:临时会话、好友必填 发至群内可不填</param>
        /// <param name="c6"> Json结构:Json结构内容</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SendJson(string c1, int c2, int c3, string c4, string c5, string c6)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6 };
            var res = await MyQQRequesNoDataAsync("Api_SendJson", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 取得好友列表，返回获取到的原始JSON格式信息，需自行解析
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetFriendList(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetFriendList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得好友列表，返回内容#换行符分割
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetFriendList_B(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetFriendList_B", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得群列表，返回获取到的原始JSON格式信息，需自行解析
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupList(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得群列表，#换行符分割 不受最高获取500群限制（如需获取群名称请对应调用 Api_GetGroupName 理论群名获取不会频繁）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupList_A(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupList_A", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得群列表，返回获取到的原始JSON格式信息，需自行解析
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupList_B(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupList_B", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得群成员列表，返回获取到的原始JSON格式信息，需自行解析（有群员昵称）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲取群成员列表群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupMemberList(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupMemberList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得群成员列表，#换行符分割 失败返回空（无群员昵称）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupMemberList_B(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupMemberList_B", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得群成员列表，返回获取到的原始JSON格式信息，需自行解析（有群员昵称）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲取群成员列表群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupMemberList_C(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupMemberList_C", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取包括群主在内的群管列表，#换行符分割
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲取管理员列表群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetAdminList(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetAdminList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得机器人网页操作用的Cookies
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetCookies(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetCookies", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得腾讯微博页面操作用参数P_skey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetBlogPsKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetBlogPsKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得QQ空间页面操作用参数P_skey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetZonePsKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetZonePsKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得QQ群页面操作用参数P_skey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupPsKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupPsKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得腾讯课堂页面操作用参数P_skey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetClassRoomPsKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetClassRoomPsKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得财付通页面操作用参数P_skey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetTenPayPsKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetTenPayPsKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得QQ举报页面操作用参数P_skey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetJuBaoPsKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetJuBaoPsKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得机器人网页操作用参数Bkn或G_tk
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetBkn(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetBkn", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得机器人网页操作用参数长Bkn或长G_tk
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetBkn32(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetBkn32", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得机器人网页操作用参数长Ldw
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetLongLdw(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetLongLdw", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取得机器人网页操作用的长Clientkey
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetLongClientkey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetLongClientkey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取会话SessionKey密钥
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_SessionKey(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_SessionKey", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 设置机器人在线状态+附加信息
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 在线状态:无</param>
        /// <param name="c3"> 状态附加信息:最大255字节</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetStatus(string c1, int c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_SetStatus", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 获取机器人状态信息
        /// </summary>
        /// <param name="c1"></param>
        /// <returns>成功返回：昵称|帐号|在线状态|速度|收信|发信|在线时间，失败返回空</returns>
        public async Task<AjaxResult<string>> Api_GetStatus(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetStatus", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取群公告列表，返回json
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲取得公告的群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetNotice(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetNotice", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 根据图片GUID取得图片下载连接
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 图片类型:1 群 讨论组 2临时会话和好友</param>
        /// <param name="c3"> 参考对象:图片所属对应的群号（可随意乱填写，只有群图片需要填写）</param>
        /// <param name="c4"> 图片GUID:例如[pic={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.jpg]</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetPicLink(string c1, int c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<string>("Api_GetPicLink", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 调用一次点一下，成功返回空，失败返回理由如：每天最多给他点十个赞哦，调用此Api时应注意频率，每人每日可被赞10次，每日每Q最多可赞50人
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 被赞QQ:填写被赞人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_Like(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_Like", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 上传QQ语音，成功返回语音GUID （只能发送群消息使用，不能好友） 失败返回空
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 语音文件:语音文件路径（AMR Silk编码）（或者wav文件）</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_UpLoadVoice(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_UpLoadVoice", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 上传图片，成功返回该图片GUID（格式为[pic={E9A12BBC-A5F9-1074-40D7-D1F229B4CA05}.png]），失败返回空
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 上传类型:1好友、临时会话 2群、讨论组 Ps：好友临时会话用类型 1，群讨论组用类型 2；当填写错误时，图片GUID发送不会成功</param>
        /// <param name="c3"> 参考对象:上传该图片所属的群号或QQ</param>
        /// <param name="c4"> 图片地址:本地路径或者网络图片地址</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_UpLoadPic(string c1, int c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<string>("Api_UpLoadPic", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 申请加群.为了避免广告、群发行为。出现验证码时将会直接失败不处理
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲申请加入的群号</param>
        /// <param name="c3"> 附加理由:附加理由，可留空（需回答正确问题时，请填写问题答案）</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_JoinGroup(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_JoinGroup", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 退群
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲退出的群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_QuitGroup(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_QuitGroup", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发送好友语音 （成功返回真 失败返回假）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 接收QQ:接收语音人QQ</param>
        /// <param name="c3"> 语音文件:语音文件路径（AMR Silk编码）</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_SendVoice(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_SendVoice", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 主动加好友 成功返回真 失败返回假 当对象设置需要正确回答问题或不允许任何人添加时无条件失败
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:加谁</param>
        /// <param name="c3"> 附加理由:加好友提交的理由</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_AddFriend(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_AddFriend", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 将好友拉入黑名单
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:被拉黑对象</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_AddBkList(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_AddBkList", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 解除好友黑名单
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:解除对象</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_DelBkList(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_DelBkList", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 禁言群成员
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:禁言对象所在群.</param>
        /// <param name="c3"> 对象:禁言对象.留空为全群禁言</param>
        /// <param name="c4"> 时长:禁言时间，0为解除禁言 （单位为秒，最长一个月）</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_Shutup(string c1, string c2, string c3, int c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<bool>("Api_Shutup", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 根据群号+QQ判断指定群员是否被禁言 获取失败的情况下亦会返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲查询的群号</param>
        /// <param name="c3"> 对象QQ:需要查询的对象QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_IsShutup(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_IsShutup", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 开关群匿名消息发送功能 成功返回真 失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:需开关群匿名功能群号</param>
        /// <param name="c3"> 开关:真开 假关</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_SetAnon(string c1, string c2, bool c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_SetAnon", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取出讨论组列表 （返回格式为 换行符分割开的）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetDisGroupList(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetDisGroupList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取出讨论组成员列表 （返回格式为 换行符分割开的）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 讨论组ID:需获取的讨论组ID</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetDisGroupMemberList(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetDisGroupMemberList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 向好友发起窗口抖动（戳一戳），调用此Api腾讯会限制频率
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 接收QQ:接收的QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_ShakeWindow(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<bool>("Api_ShakeWindow", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取对象资料 此方式为http，调用时应自行注意控制频率（成功返回JSON格式自行解析）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetObjInfo(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetObjInfo", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 删除好友 成功返回真 失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:被删除对象</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_DelFriend(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<bool>("Api_DelFriend", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 屏蔽或接收某群消息
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:无</param>
        /// <param name="c3"> 类型:1接收群消息 2收进群助手且不提醒 3屏蔽群消息 4为接收群消息但不提醒</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetShieldedGroup(string c1, string c2, int c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_SetShieldedGroup", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 设置或取消群管理员，成功返回1，失败返回0
        /// </summary>
        /// <param name="c1"> 响应QQ:无</param>
        /// <param name="c2"> 群号:无</param>
        /// <param name="c3"> 对象QQ:无</param>
        /// <param name="c4"> 操作方式:1为设置管理，0为取消管理</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_SetAdmin(string c1, string c2, string c3, int c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<int>("Api_SetAdmin", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 消息撤回（成功返回空，失败返回腾讯给出的理由）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:需撤回消息群号</param>
        /// <param name="c3"> 消息序号:需撤回消息序号</param>
        /// <param name="c4"> 消息ID:需撤回消息ID</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_WithdrawMsg(string c1, string c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<string>("Api_WithdrawMsg", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 置正在输入状态（发送消息后会打断状态）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:置正在输入状态接收对象</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_BeInput(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_BeInput", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 取对象好友添加验证方式 （00 允许任何人 01 需要身份验证 03 需回答正确问题 04 需回答问题 99 已经是好友）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:需获取对象QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetQQAddMode(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetQQAddMode", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询对象在线状态 返回 1、在线 2、Q我 3、离开 4、忙碌 5、勿扰 6、隐身或离线
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:需获取对象QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetOnlineState(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetOnlineState", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询对象群当前人数和上限人数，返回格式为：群人数/群上限
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:需查询的群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupMemberNum(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupMemberNum", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取对象群名片
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:群号</param>
        /// <param name="c3"> 对象QQ:欲取得群名片的QQ号码</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupCard(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupCard", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 向框架帐号列表添加一个Q.当该Q已存在时则覆盖密码
        /// </summary>
        /// <param name="c1"> 帐号:机器人QQ</param>
        /// <param name="c2"> 密码:机器人密码</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_AddQQ(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<bool>("Api_AddQQ", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 删除框架帐号列表内指定QQ，不可在执行登录过程中删除QQ否则有几率引起错误
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_DelQQ(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequesNoDataAsync("Api_DelQQ", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 登录指定QQ，应确保QQ号码在列表中已存在
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_Login(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<bool>("Api_Login", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 令指定QQ下线，应确保QQ号码已在列表中且在线
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_Logout(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequesNoDataAsync("Api_Logout", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 是否QQ好友（双向） 好友返回真 非好友或获取失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:需获取对象QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_IfFriend(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<bool>("Api_IfFriend", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 调用一次点一下，成功返回空，失败返回理由如：每天最多给他点十个赞哦，调用此Api时应注意频率，每人每日可被赞10次，每日每Q最多可赞50人
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:填写被赞人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_UpVote(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_UpVote", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取等级 活跃天数 升级剩余活跃天数，成功返回json
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetQQLevelInfo(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetQQLevelInfo", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// Tea加密
        /// </summary>
        /// <param name="c1"> 需加密内容:需加密的内容</param>
        /// <param name="c2"> KEY:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_TeaEncrypt(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_TeaEncrypt", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// Tea解密
        /// </summary>
        /// <param name="c1"> 需解密内容:需解密的内容</param>
        /// <param name="c2"> KEY:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_TeaDecrypt(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_TeaDecrypt", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 群号转群ID
        /// </summary>
        /// <param name="c1"> 群号:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GNGetGid(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GNGetGid", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 群ID转群号
        /// </summary>
        /// <param name="c1"> 群ID:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GidGetGN(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GidGetGN", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 修改对象群名片 成功返回真 失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:对象所处群号</param>
        /// <param name="c3"> 对象QQ:被修改名片人QQ</param>
        /// <param name="c4"> 名片:需要修改的名片</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_SetGroupCard(string c1, string c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<bool>("Api_SetGroupCard", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 将对象移除群
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:被执行群号</param>
        /// <param name="c3"> 对象QQ:被执行对象</param>
        /// <param name="c4"> 不再接收加群请求:真为不再接收，假为接收</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_KickGroupMBR(string c1, string c2, string c3, bool c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequesNoDataAsync("Api_KickGroupMBR", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 退出讨论组
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 讨论组ID:需退出的讨论组ID</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_QuitDisGroup(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_QuitDisGroup", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 将对象移除讨论组
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 讨论组ID:需执行的讨论组ID</param>
        /// <param name="c3"> 对象QQ:被执行对象</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_KickDisGroupMBR(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_KickDisGroupMBR", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 修改讨论组名称
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 讨论组ID:需执行的讨论组ID</param>
        /// <param name="c3"> 讨论组名称:需修改的名称</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetDisGroupName(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_SetDisGroupName", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 修改好友备注姓名
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:需获取对象好友QQ</param>
        /// <param name="c3"> 备注:需要修改的备注姓名</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetFriendsRemark(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_SetFriendsRemark", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 取好友备注姓名（成功返回备注，失败或无备注返回空）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:需获取对象好友QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetFriendsRemark(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetFriendsRemark", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 向服务器发送原始封包（成功返回服务器返回的包 失败返回空）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 封包:封包内容</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_SendPack(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_SendPack", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取框架所有QQ列表 包括未登录以及登录失败的QQ 换行符分割
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetQQList()
        {
            object o = new();
            var res = await MyQQRequestAsync<string>("Api_GetQQList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取框架在线可用的QQ列表 换行符分割
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetOnlineQQlist()
        {
            object o = new();
            var res = await MyQQRequestAsync<string>("Api_GetOnlineQQlist", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取框架离线QQ列表 换行符分割
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetOffLineList()
        {
            object o = new();
            var res = await MyQQRequestAsync<string>("Api_GetOffLineList", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询对象或自身QQ达人天数（返回实际天数 失败返回-1）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:需查询对象或机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetExpertDays(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetExpertDays", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发布群公告，调用此API应保证响应QQ为管理员
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲发布公告的群号</param>
        /// <param name="c3"> 标题:公告标题</param>
        /// <param name="c4"> 内容:公告内容</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_PBGroupNotic(string c1, string c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<bool>("Api_PBGroupNotic", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 送群礼物（返回Json格式）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:需送礼物群号</param>
        /// <param name="c3"> 对象QQ:赠予礼物对象</param>
        /// <param name="c4"> pid:礼物pid</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GiveGift(string c1, string c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<string>("Api_GiveGift", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询对象或自身群聊等级（返回实际等级 失败返回空）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:查询群号</param>
        /// <param name="c3"> 对象QQ:需查询对象或机器人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupChatLv(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupChatLv", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// QQ群作业发布（返回Json格式）
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:需要发布的群号</param>
        /// <param name="c3"> 作业名:无</param>
        /// <param name="c4"> 标题:无</param>
        /// <param name="c5"> 内容:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_PBHomeWork(string c1, string c2, string c3, string c4, string c5)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5 };
            var res = await MyQQRequestAsync<string>("Api_PBHomeWork", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 管理员邀请对象入群，频率过快会失败
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:被邀请加入的群号</param>
        /// <param name="c3"> 对象QQ:被邀请人QQ号码（多个号码使用,分割）</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_AdminInviteGroup(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_AdminInviteGroup", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 非管理员邀请对象入群，频率过快会失败
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:被邀请加入的群号</param>
        /// <param name="c3"> 对象QQ:被邀请人QQ号码（多个号码使用,分割）</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_NoAdminInviteGroup(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequesNoDataAsync("Api_NoAdminInviteGroup", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 取对象性别 1男 2女 未知或失败返回-1
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetGender(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetGender", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取Q龄 成功返回Q龄 失败返回-1
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetQQAge(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetQQAge", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取年龄 成功返回年龄 失败返回-1
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetAge(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetAge", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取邮箱，获取对象QQ资料内邮箱栏为邮箱时返回
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetEmail(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetEmail", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 设置个人签名
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 签名:无</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetSign(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_SetSign", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 设置机器人性别
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 性别:“1”为男 “2”为女</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetGender(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_SetGender", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 设置机器人昵称
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 昵称:需要设置的昵称</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_SetNick(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequesNoDataAsync("Api_SetNick", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 某人请求添加好友验证处理
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:请求添加好友人QQ</param>
        /// <param name="c3"> 处理方式:10同意 20拒绝 30忽略</param>
        /// <param name="c4"> 附加信息:拒绝添加好友 附加信息</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_HandleFriendEvent(string c1, string c2, int c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequesNoDataAsync("Api_HandleFriendEvent", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 某人请求加入群聊验证处理
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> data:MQ_原始信息</param>
        /// <param name="c3"> 处理方式:10同意 20拒绝 30或0忽略</param>
        /// <param name="c4"> 附加信息:拒绝时的附加信息</param>
        /// <param name="c5"> 拒绝不再接受:1为真，慎用</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_HandleGroupEvent(string c1, string c2, int c3, string c4, int c5)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5 };
            var res = await MyQQRequesNoDataAsync("Api_HandleGroupEvent", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 创建一个讨论组 成功返回讨论组ID 失败返回原因
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_CreateDisGroup(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_CreateDisGroup", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 邀请对象加入讨论组 成功返回空 失败返回理由
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 讨论组ID:需执行的讨论组ID</param>
        /// <param name="c3"> 邀请对象QQ:被邀请对象QQ 多个用,分割</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_InviteDisGroup(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_InviteDisGroup", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取QQ群名
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupName(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupName", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 点赞，调用一次点一下，成功返回空，失败返回理由如：每天最多给他点十个赞哦，调用此Api时应注意频率，每人每日可被赞10次，每日每Q最多可赞50人
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:填写被赞人QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_UpVoteEx(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_UpVoteEx", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 修改机器人头像
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 图片地址:本地图片路径或者网络图片地址</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_UpLoad(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<bool>("Api_UpLoad", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取加群方式，1允许任何人 2需要验证消息 3不允许任何人加群 4需要正确回答问题 5需要回答问题并由管理员审核 6付费群 0群号不存在
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetGroupAddMode(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetGroupAddMode", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建K歌红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:群发就填群号，私发就填QQ(讨论组视为群)</param>
        /// <param name="c4"> 数量:个数</param>
        /// <param name="c5"> 金额:金额</param>
        /// <param name="c6"> 祝福语:恭喜发财</param>
        /// <param name="c7"> 类型:1好友;2群，默认群(讨论组视为群)</param>
        /// <param name="c8"> 歌曲id:默认124</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_K歌红包(string c1, string c2, string c3, string c4, string c5, string c6, int c7, string c8)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7, c8 = c8 };
            var res = await MyQQRequestAsync<string>("Api_红包_K歌红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询红包记录，成功返回为json，自行解析，失败返回为原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 年份:留空便为当年年份</param>
        /// <param name="c4"> 查询类型:无</param>
        /// <param name="c5"> 第几页:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_红包记录(string c1, string c2, string c3, int c4, int c5)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5 };
            var res = await MyQQRequestAsync<string>("Api_红包_红包记录", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询红包余额，成功返回json，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_查询余额(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_红包_查询余额", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建转账红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:对方QQ</param>
        /// <param name="c4"> 对象昵称:对方的昵称，可随便填</param>
        /// <param name="c5"> 金额:金额，注意，非好友转账最低1元</param>
        /// <param name="c6"> 留言:万事顺心</param>
        /// <param name="c7"> 非好友转账:是否非好友转账，注意，非好友转账最低1元</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_转账(string c1, string c2, string c3, string c4, string c5, string c6, bool c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequestAsync<string>("Api_红包_转账", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建口令红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:群发就填群号，私发就填QQ(讨论组视为群)</param>
        /// <param name="c4"> 数量:个数</param>
        /// <param name="c5"> 金额:金额</param>
        /// <param name="c6"> 口令:我是大傻子</param>
        /// <param name="c7"> 类型:1好友;2群，默认群(讨论组视为群)</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_口令红包(string c1, string c2, string c3, string c4, string c5, string c6, int c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequestAsync<string>("Api_红包_口令红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建拼手气红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:(讨论组视为群)</param>
        /// <param name="c4"> 数量:个数</param>
        /// <param name="c5"> 金额:金额</param>
        /// <param name="c6"> 祝福语:恭喜发财</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_拼手气红包(string c1, string c2, string c3, string c4, string c5, string c6)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6 };
            var res = await MyQQRequestAsync<string>("Api_红包_拼手气红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建普通红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:群发就填群号，私发就填QQ(讨论组视为群)</param>
        /// <param name="c4"> 数量:个数</param>
        /// <param name="c5"> 金额:金额</param>
        /// <param name="c6"> 祝福语:恭喜发财</param>
        /// <param name="c7"> 类型:1好友;2群;3群临时会话，默认群(讨论组视为群)</param>
        /// <param name="c8"> 讨论组群号:当类型为3时，要提供临时会话的群号</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_普通红包(string c1, string c2, string c3, string c4, string c5, string c6, int c7, string c8)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7, c8 = c8 };
            var res = await MyQQRequestAsync<string>("Api_红包_普通红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建引力球红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:群发就填群号，私发就填QQ(讨论组视为群)</param>
        /// <param name="c4"> 数量:个数</param>
        /// <param name="c5"> 金额:金额</param>
        /// <param name="c6"> 祝福语:恭喜发财</param>
        /// <param name="c7"> 类型:1好友;2群;3群临时会话，默认群(讨论组视为群)</param>
        /// <param name="c8"> 挑战分数:必须为正整数，默认100，错误的值强制100</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_引力球红包(string c1, string c2, string c3, string c4, string c5, string c6, int c7, string c8)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7, c8 = c8 };
            var res = await MyQQRequestAsync<string>("Api_红包_引力球红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建语音红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 对象:群发就填群号，私发就填QQ(讨论组视为群)</param>
        /// <param name="c4"> 数量:个数</param>
        /// <param name="c5"> 金额:金额</param>
        /// <param name="c6"> 口令:我是傻子</param>
        /// <param name="c7"> 类型:1好友;2群;3群临时会话，默认群(讨论组视为群)</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_语音红包(string c1, string c2, string c3, string c4, string c5, string c6, int c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequestAsync<string>("Api_红包_语音红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建专享红包，成功返回success，失败返回失败原因
        /// </summary>
        /// <param name="c1"> 机器人QQ:无</param>
        /// <param name="c2"> 支付密码:无</param>
        /// <param name="c3"> 群号:(讨论组视为群)</param>
        /// <param name="c4"> 对象:对方的QQ</param>
        /// <param name="c5"> 数量:个数</param>
        /// <param name="c6"> 金额:金额</param>
        /// <param name="c7"> 祝福语:恭喜发财</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_红包_专享红包(string c1, string c2, string c3, string c4, string c5, string c6, string c7)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7 };
            var res = await MyQQRequestAsync<string>("Api_红包_专享红包", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 重载自身
        /// </summary>
        /// <param name="c1"> path:新路径</param>
        /// <returns></returns>
        public async Task<AjaxResult> Api_Reload(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequesNoDataAsync("Api_Reload", o);
            return new AjaxResult() { Success = res.Success, Msg = res.Msg };
        }
        /// <summary>
        /// 获取等级，成功返回等级
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 对象QQ:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetQQLevel(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetQQLevel", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 置全群禁言
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:欲操作的群号</param>
        /// <param name="c3"> 开关:1为开启，0为解除</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_ShutupGroup(string c1, string c2, int c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_ShutupGroup", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 搜索群，返回原始json
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 关键词:无</param>
        /// <param name="c3"> 页数:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_SearchGroup(string c1, string c2, int c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_SearchGroup", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发表说说，成功返回1，失败返回0
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 说说内容:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_PubSay(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_PubSay", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 请确保bin目录有ffmpeg转码库(框架不自带)，成功返回amr文件完整路径，可直接调用上传语音api，失败返回空
        /// </summary>
        /// <param name="c1"> mp3文件路径:mp3文件路径</param>
        /// <param name="c2"> amr文件路径:amr文件存放路径</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_Mp3ToAmr(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_Mp3ToAmr", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 成功返回群号等信息，http模式创建群聊，请注意调用频率
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群名称:无</param>
        /// <param name="c3"> 群类别:如：10048=行业交流</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_CreateGroup_A(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_CreateGroup_A", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发起群投票_单选，返回投票fid
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:无</param>
        /// <param name="c3"> 标题:无</param>
        /// <param name="c4"> 选项1:无</param>
        /// <param name="c5"> 选项2:无</param>
        /// <param name="c6"> 选项3:无</param>
        /// <param name="c7"> 截止日期十位时间戳:截止日期十位时间戳</param>
        /// <param name="c8"> 是否匿名:1为匿名 0为不匿名</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_PublishVote_A(string c1, string c2, string c3, string c4, string c5, string c6, string c7, string c8)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7, c8 = c8 };
            var res = await MyQQRequestAsync<string>("Api_PublishVote_A", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发起群投票_多选，返回投票fid
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:无</param>
        /// <param name="c3"> 标题:无</param>
        /// <param name="c4"> 选项1:无</param>
        /// <param name="c5"> 选项2:无</param>
        /// <param name="c6"> 选项3:无</param>
        /// <param name="c7"> 最多选几项:填写最多可选几项</param>
        /// <param name="c8"> 截止日期十位时间戳:截止日期十位时间戳</param>
        /// <param name="c9"> 是否匿名:1为匿名 0为不匿名</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_PublishVote_B(string c1, string c2, string c3, string c4, string c5, string c6, string c7, string c8, string c9)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6, c7 = c7, c8 = c8, c9 = c9 };
            var res = await MyQQRequestAsync<string>("Api_PublishVote_B", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询群是否支持匿名聊天
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 目标群号:无</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetAnon(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GetAnon", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 邀请别人群成员加入自己群
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 目标群号:被邀请加入的群号</param>
        /// <param name="c3"> 所在群号:被邀请人和机器人共同存在的群号</param>
        /// <param name="c4"> 对象QQ:被邀请人QQ号码（多个号码使用,分开）</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_InviteGroup_other(string c1, string c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<int>("Api_InviteGroup_other", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 返回结果请调试查看：机器人非管理员，禁止设置精华消息
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:需设置的群号</param>
        /// <param name="c3"> 消息序号:需设置的消息序号</param>
        /// <param name="c4"> 消息ID:需设置的消息ID</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_SetMsgEssence(string c1, string c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<string>("Api_SetMsgEssence", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发送群文件，成功返回 文件信息 失败返回 空
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 目标群号:要上传的群号</param>
        /// <param name="c3"> 本地文件路径:文件的完整路径</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_UpGroupFile(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_UpGroupFile", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发送好友文件，成功返回1 失败返回0
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 发送QQ:要发送给的谁</param>
        /// <param name="c3"> 本地文件路径:文件的完整路径，文件名不能太长</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_UpFriendFile(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<int>("Api_UpFriendFile", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取群成员信息，成功返回json
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:群号</param>
        /// <param name="c3"> 对象QQ:对象QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupMemberInfo(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupMemberInfo", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 创建群支付，成功返回c_no，失败返回：retmsg=账号未实名认证（可通过寻找文本retmsg判断是否成功）
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 群号:</param>
        /// <param name="c3"> 标题:</param>
        /// <param name="c4"> 类型:1=均摊，2=指定</param>
        /// <param name="c5"> 需支付QQ:多个用,隔开</param>
        /// <param name="c6"> 需支付金额:单位分，多人用,隔开，需要和上一个参数保持一致(均摊情况下，每个人的要一样)</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_CreateGroupPay(string c1, string c2, string c3, int c4, string c5, string c6)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5, c6 = c6 };
            var res = await MyQQRequestAsync<string>("Api_CreateGroupPay", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 查询群收钱账单详情，成功返回json，可调用Api_GroupPayIsOk（群收钱账单是否已支付）解析
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> c_no:发起群收钱获得的c_no</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetGroupPayDetail(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetGroupPayDetail", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 群收钱账单是否已支付，已支付返回1，未支付返回0
        /// </summary>
        /// <param name="c1"> 账单详情json:查询账单详情获得的json</param>
        /// <param name="c2"> 要查询的QQ:对象QQ</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GroupPayIsOk(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_GroupPayIsOk", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发送群收钱账单催收通知，成功返回1，失败返回0
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> c_no:发起群收钱获得的c_no</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_SendGroupPayMsg(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<int>("Api_SendGroupPayMsg", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 修改群名称，成功返回1，失败返回0
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:对象群号</param>
        /// <param name="c3"> 群名:修改的群名称</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_SetGroupName(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<int>("Api_SetGroupName", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 删除好友变成单项好友\陌生人 成功返回真 失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 对象QQ:被删除对象</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_DelFriend_A(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<bool>("Api_DelFriend_A", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取群公告已阅读人员详情，成功返回json
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 群号:群号</param>
        /// <param name="c3"> 公告FID:群公告FID</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetNoticDetail(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<string>("Api_GetNoticDetail", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取机器人屏蔽状态，1=正常，0=被屏蔽
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetShieldedState(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetShieldedState", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 修改机器人好友验证方式，成功返回真，失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 验证方式:1为允许任何人 2为需要验证 3为需要正确回答问题</param>
        /// <param name="c3"> 设置问题:当验证方式为3时填写问题,其他类型可空</param>
        /// <param name="c4"> 问题答案:当验证方式为3时填写问题答案,其他类型可空</param>
        /// <returns></returns>

        public async Task<AjaxResult<bool>> Api_SetFriendVerify(string c1, int c2, string c3, string c4)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4 };
            var res = await MyQQRequestAsync<bool>("Api_SetFriendVerify", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 添加群机器人（腾讯机器人QQ），成功返回真，失败返回假，可能为频率过快，机器人已存在等原因
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 群号:群号</param>
        /// <param name="c3"> 腾讯机器人QQ:详情见文档，可以获取TencentQQRobot枚举量的描述</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_AddGroupRobot(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_AddGroupRobot", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 删除群机器人（腾讯机器人QQ），成功返回真，失败返回假，可能为频率过快，机器人已不存在等原因
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 群号:群号</param>
        /// <param name="c3"> 腾讯机器人QQ:详情见文档,可以获取TencentQQRobot枚举量的描述</param>
        /// <returns></returns>
        public async Task<AjaxResult<bool>> Api_DelGroupRobot(string c1, string c2, string c3)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3 };
            var res = await MyQQRequestAsync<bool>("Api_DelGroupRobot", o);
            return new AjaxResult<bool>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取个人说明
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 对象QQ:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetPerExp(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetPerExp", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取学校，获取对象QQ资料内学校栏
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 对象QQ:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetSchool(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetSchool", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取公司，获取对象QQ资料内公司栏
        /// </summary>
        /// <param name="c1"> 响应QQ:</param>
        /// <param name="c2"> 对象QQ:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetCompany(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetCompany", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取登录二维码，成功返回{"status":"200","msg":"用QQ手机版扫描二维码安全登录。","qr_id":"MyQQ-1","qr_file":"1626880321974.png"}
        /// </summary>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_CreatQrCodeInfo()
        {
            object o = new();
            var res = await MyQQRequestAsync<object>("Api_CreatQrCodeInfo", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data.ToJson() };
        }
        /// <summary>
        /// 获取二维码登录状态，返回状态有：1=确认成功，正在登陆 2=登录成功 3=扫描成功，请在手机上点击确认 4=二维码失效，请重新申请 5=未申请二维码 6=等待扫码
        /// </summary>
        /// <param name="c1"> qr_id:</param>
        /// <returns></returns>
        public async Task<AjaxResult<int>> Api_GetQrCodeStatus(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<int>("Api_GetQrCodeStatus", o);
            return new AjaxResult<int>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 取消二维码登录
        /// </summary>
        /// <param name="c1"> qr_id:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_CloseQrCode(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_CloseQrCode", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// （HTTPAPI不必使用）获取二维码图片的本地路径，返回为：C:\Users\13301\Desktop\开发\MyQQ\MyQQ_Dev\data\cache\1626880321974.png
        /// </summary>
        /// <param name="c1"> qr_file:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetQrCodePath(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetQrCodePath", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 获取登录框架的qq号，扫码登陆成功后可调用此API获取登录的QQ号
        /// </summary>
        /// <param name="c1"> qr_file:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetQrQQNumber(string c1)
        {
            object o = new { c1 = c1 };
            var res = await MyQQRequestAsync<string>("Api_GetQrQQNumber", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 加群，返回格式为：是否成功=真&amp;短信标识=短信标识，如果短信标识不为空，就是需要短信，调用取短信详情（Api_GetJoinGroupMsg）获取短信详情
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 群号:</param>
        /// <param name="c3"> 理由:</param>
        /// <param name="c4"> 接口:接口 0=随机，1=搜索群号、2=附近的群、3=通知界面加群、4=链接加群、5=关键词、6=精确查找</param>
        /// <param name="c5"> 通道:通道 0=随机，1=新版，2=老版</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_JoinGroupEx(string c1, string c2, string c3, string c4, string c5)
        {
            object o = new { c1 = c1, c2 = c2, c3 = c3, c4 = c4, c5 = c5 };
            var res = await MyQQRequestAsync<string>("Api_JoinGroupEx", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 返回json文本 含有需发送至短信号码 短信内容,{"SendMsgNumber":"1888666666","SendMsgToNumber":"1069***794","MsgText":"***"}
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 短信标识:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_GetJoinGroupMsg(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_GetJoinGroupMsg", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }
        /// <summary>
        /// 发送短信后，调用此API查询是否加群成功，成功返回真，失败返回假
        /// </summary>
        /// <param name="c1"> 响应QQ:机器人QQ</param>
        /// <param name="c2"> 短信标识:</param>
        /// <returns></returns>
        public async Task<AjaxResult<string>> Api_CheckJoinGroupMsg(string c1, string c2)
        {
            object o = new { c1 = c1, c2 = c2 };
            var res = await MyQQRequestAsync<string>("Api_CheckJoinGroupMsg", o);
            return new AjaxResult<string>() { Success = res.Success, Msg = res.Msg, Data = res.Data };
        }

        #endregion
    }

    /// <summary>
    /// MyQQ框架post请求信息
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class PostRequestInfo<T>
    {
        /// <summary>
        /// 调用的接口函数名
        /// </summary>
        public string function { get; set; }
        /// <summary>
        /// 接口验证token，可为空
        /// </summary>
        public string token { get; set; }
        /// <summary>
        /// 传入参数
        /// </summary>
        public T @params { get; set; }
    }


    /// <summary>
    /// MyQQHttpApiRequestInfo
    /// </summary>
    public class HttpApiRequestInfo
    {

        /// <summary>
        /// Id
        /// </summary>
        public String Id { get; set; }

        /// <summary>
        /// UserId
        /// </summary>
        public String UserId { get; set; }

        /// <summary>
        /// 接口请求url
        /// </summary>
        public String Posturl { get; set; }

        /// <summary>
        /// token
        /// </summary>
        public String Token { get; set; }

        /// <summary>
        /// 机器人QQ
        /// </summary>
        public String RobotQQ { get; set; }

        /// <summary>
        /// 机器人qq名
        /// </summary>
        public String RobotName { get; set; }

        /// <summary>
        /// 在线状态，1在线，0离线，其余未知
        /// </summary>
        public Int32? OnlineStatus { get; set; }

        /// <summary>
        /// 是否打开
        /// </summary>
        public Int32? Switch { get; set; }

    }

    /// <summary>
    /// MyQQ框架post请求的回复
    /// </summary>
    public class ResultInfo<T>
    {
        /// <summary>
        /// 是否成功
        /// </summary>
        public bool success { get; set; }
        /// <summary>
        /// 请求代码
        /// </summary>
        public int code { get; set; }
        /// <summary>
        /// 返回消息
        /// </summary>
        public string msg { get; set; }
        /// <summary>
        /// 返回消息
        /// </summary>
        public T data { get; set; }
    }
    /// <summary>
    /// MyQQ框架的http请求恢复
    /// </summary>
    public class ResData
    {
        /// <summary>
        /// 请求回复内容
        /// </summary>
        public object ret { get; set; }
    }
}
